package com.example.wweather;

import java.util.ArrayList;

import android.location.Location;
import android.text.format.Time;

public class AgSugLug {
	public Lugar lResult(ArrayList<Lugar> placs) {
		Lugar res = new Lugar();
		res = placs.get(0);
		for (int i = 1; i < placs.size(); i++) {
			if (res.getFrecuencia() < placs.get(i).getFrecuencia()) {
			} else {
				res = placs.get(i);
			}
		}
		res.setFrecuencia(res.getFrecuencia() + 1);
		return res;
	}

	public ArrayList<Lugar> getbyRadio(ArrayList<Lugar> placs, int radio,
			double alat, double alon) {
		ArrayList<Lugar> res = new ArrayList<Lugar>();
		int mayor = 0;
		int mayorb = 0;

		for (int i = 1; i < placs.size(); i++) {

			if (getDistance(placs.get(mayor).getLat(), placs.get(mayor)
					.getLat(), alat, alon) <= getDistance(
					placs.get(i).getLat(), placs.get(i).getLat(), alat, alon)) {
				mayor = i;
			}
		}
		if(mayor==0){
			mayorb=1;
		}
		for (int i = 1; i < placs.size(); i++) {
			if (i != mayor	&& getDistance(placs.get(mayorb).getLat(), placs
							.get(mayorb).getLat(), alat, alon) <= getDistance(
							placs.get(i).getLat(), placs.get(i).getLat(), alat,
							alon)) {
				mayorb = i;

			}
		}
		for (int i = 0; i < placs.size(); i++) {
			if (i != mayor && i != mayorb) {
				res.add(placs.get(i));
				System.out.println("Mayooor "+ mayor + " " + mayorb);
			}
		}
		return res;
	}

	public ArrayList<Lugar> getbyType(String tipo) {
		ArrayList<Lugar> mlugares = new ArrayList<Lugar>();
		ArrayList<Lugar> rlugares = new ArrayList<Lugar>();

		misLugares todos = new misLugares();
		mlugares = todos.bLugar();
		for (int i = 0; i < mlugares.size(); i++) {

			if (mlugares.get(i).getTipo().equals(tipo)) {
				rlugares.add(mlugares.get(i));
			}
		}

		return rlugares;

	}

	public float getDistance(double lat_a, double lon_a, double lat_b,
			double lon_b) {
		float dist[] = new float[3];
		Location.distanceBetween(lat_a, lon_a, lat_b, lon_b, dist);
		return dist[0];
	}

	public String getTipo(int[] califs, int edad, int temp,
			ArrayList<String> gustos, String Ocupacion, String acomp, int pres) {
		ArrayList<String> tipos = new ArrayList<String>();
		tipos.add("Argentina");
		tipos.add("Espanola");
		tipos.add("Japonesa");
		tipos.add("Comida Corrida");
		tipos.add("Comida Rapida");
		tipos.add("Mexicana");
		tipos.add("Bar");
		tipos.add("Cafeteria");
		tipos.add("China");
		tipos.add("Gourmet");
		tipos.add("Italiana");
		tipos.add("Mariscos");
		tipos.add("Fuente de sodas");
		Time now = new Time();

		now.setToNow();
		if (now.hour > 17 || now.hour < 12) {
			califs[tipos.indexOf("Comida Corrida")] -= 10;
		}
		if (now.hour < 20 && now.hour > 3) {
			califs[tipos.indexOf("Bar")] -= 10;
		}
		if (now.hour > 23 || now.hour < 9) {
			califs[tipos.indexOf("Argentina")] -= 10;
			califs[tipos.indexOf("China")] -= 10;
			califs[tipos.indexOf("Espanola")] -= 10;
			califs[tipos.indexOf("Japonesa")] -= 10;
			califs[tipos.indexOf("Italiana")] -= 10;
			califs[tipos.indexOf("Gourmet")] -= 10;
			califs[tipos.indexOf("Mexicana")] -= 10;
			califs[tipos.indexOf("Mariscos")] -= 10;
		}
		if (now.hour < 4) {
			califs[tipos.indexOf("Cafeteria")] -= 10;
		}
		if (now.hour < 10) {
			califs[tipos.indexOf("Fuente de sodas")] -= 10;
		}
		if (now.hour >= 18) {
			califs[tipos.indexOf("Fuente de sodas")] -= 2;
		}
		if (temp >= 25) {
			califs[tipos.indexOf("Fuente de sodas")] += 2;
			califs[tipos.indexOf("Bar")] += 1;
		}
		if (temp <= 10) {
			califs[tipos.indexOf("Cafeteria")] += 3;
			califs[tipos.indexOf("Fuente de sodas")] -= 10;
			califs[tipos.indexOf("Argentina")] += 2;
			califs[tipos.indexOf("China")] += 2;
			califs[tipos.indexOf("Espanola")] += 2;
			califs[tipos.indexOf("Japonesa")] += 2;
			califs[tipos.indexOf("Italiana")] += 2;
			califs[tipos.indexOf("Gourmet")] += 2;
		}
		if (edad >= 30) {
			califs[tipos.indexOf("Argentina")] += 2;
			califs[tipos.indexOf("China")] += 2;
			califs[tipos.indexOf("Espanola")] += 2;
			califs[tipos.indexOf("Japonesa")] += 2;
			califs[tipos.indexOf("Italiana")] += 2;
			califs[tipos.indexOf("Gourmet")] += 2;
		} else if (edad > 20 && edad < 30) {
			califs[tipos.indexOf("Bar")] += 2;
			califs[tipos.indexOf("Fuente de sodas")] += 1;
		} else if (edad <= 20) {
			califs[tipos.indexOf("Fuente de sodas")] += 1;
		}
		if (Ocupacion.equals("Estudiante")) {
			califs[tipos.indexOf("Bar")] += 1;
			califs[tipos.indexOf("Cafeteria")] += 2;
			califs[tipos.indexOf("Mexicana")] += 2;
			califs[tipos.indexOf("Fuente de sodas")] += 2;
			califs[tipos.indexOf("Comida Rapida")] += 1;
		}
		if (Ocupacion.equals("Trabajador")) {
			califs[tipos.indexOf("Comida Rapida")] += 1;
			califs[tipos.indexOf("Comida Corrida")] += 3;
			califs[tipos.indexOf("Cafeteria")] += 1;
		}
		if (Ocupacion.equals("Visitante")) {
			califs[tipos.indexOf("Mariscos")] += 2;
			califs[tipos.indexOf("Argentina")] += 2;
			califs[tipos.indexOf("China")] += 2;
			califs[tipos.indexOf("Espanola")] += 2;
			califs[tipos.indexOf("Japonesa")] += 2;
			califs[tipos.indexOf("Italiana")] += 2;
			califs[tipos.indexOf("Gourmet")] += 2;

		}

		if (gustos.contains("Picante")) {
			califs[tipos.indexOf("Mariscos")] += 1;
			califs[tipos.indexOf("Mexicana")] += 1;
			califs[tipos.indexOf("Comida Corrida")] += 1;
		}
		if (gustos.contains("Dulce")) {
			califs[tipos.indexOf("Cafeteria")] += 1;
			califs[tipos.indexOf("Gourmet")] += 1;
			califs[tipos.indexOf("Fuente de sodas")] += 1;
		}
		if (gustos.contains("Agridulce")) {
			califs[tipos.indexOf("China")] += 1;
			califs[tipos.indexOf("Japonesa")] += 1;
		}
		if (gustos.contains("Salado")) {
			califs[tipos.indexOf("Espanola")] += 1;
			califs[tipos.indexOf("Comida Corrida")] += 1;
			califs[tipos.indexOf("Italiana")] += 1;
			califs[tipos.indexOf("Argentina")] += 1;
		}

		if (pres >= 500) {
			califs[tipos.indexOf("Gourmet")] += 2;
		} else {
			califs[tipos.indexOf("Gourmet")] -= 4;
		}
		if (pres < 100) {
			califs[tipos.indexOf("Comida Corrida")] += 1;
		}
		if (acomp.equals("Ninos")) {
			califs[tipos.indexOf("Comida Rapida")] += 2;
			califs[tipos.indexOf("Fuente de sodas")] += 1;
		}

		int mayor, pos;
		mayor = califs[0];
		pos = 0;
		for (int x = 1; x < califs.length; x++) {
			if (califs[x] > mayor) {
				mayor = califs[x];
				pos = x;
			}
		}
		int posres = 1;
		int pox = 0;
		int pon = 0;
		if (mayor == califs[0]) {
			mayor = califs[1];
		} else {
			mayor = califs[0];
		}
		for (int x = 1; x < califs.length; x++) {
			if (califs[x] >= mayor && x != pos) {
				mayor = califs[x];
				pox = x;
			}
		}

		if (califs[pox] < 1) {
			posres = 1;
		} else if (califs[pox] > 3) {
			posres = 2;

			for (int x = 1; x < califs.length; x++) {
				if (califs[x] >= mayor && x != pos && x != pox) {
					mayor = califs[x];
					pon = x;
				}
			}
			if (califs[pon] < 1) {
				posres = 2;
			} else if (califs[pon] > 3) {
				posres = 3;
			}
		}
		int res = (int) ((Math.random() * 1000) % posres);
		if (res == 0) {
			return tipos.get(pos);
		} else if (res == 1) {
			return tipos.get(pox);
		} else if (res == 2) {
			return tipos.get(pon);
		} else {
			return acomp;
		}

	}

	public int[] calificar() {
		int cal[] = new int[13];
		cal[0] = 0;
		cal[1] = 0;
		cal[2] = 0;
		cal[3] = 0;
		cal[4] = 0;
		cal[5] = 0;
		cal[6] = 0;
		cal[7] = 0;
		cal[8] = 0;
		cal[9] = 0;
		cal[10] = 0;
		cal[11] = 0;
		cal[12] = -2;
		return cal;

	}

	public int radio(int clima, String movim) {
		int rad = 1000;
		if (movim.equals("Pie")) {
			rad = 1000;
		} else if (movim.equals("Bici")) {
			rad = 2000;
		} else if (movim.equals("Transporte publico")) {
			rad = 3000;
		} else {
			rad = 5000;
		}
		if (clima >= 143 && !movim.equals("Carro")) {
			rad = 500;
		}

		return rad;
	}
}
